package com.hxc.controller;

import com.hxc.anno.Log;
import com.hxc.entity.Dept;
import com.hxc.entity.Result;
import com.hxc.service.DeptService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;
/**
 * 部门操作层，接收和响应前端数据
 * */
@Slf4j
@RequestMapping("/depts")
@RestController
public class DeptController {
    @Autowired
    // @Qualifier("service2")// 根据名字注入
    private DeptService deptService;
    //@RequestMapping(value = "/depts",method = RequestMethod.GET)
    @GetMapping //(value = "/depts")
    public Result getAll() {

        List<Dept> depts = deptService.list();
//        for (Dept dept : depts) {
//            System.out.println(dept);
//        }
        // 3.响应数据（json格式）\
        // @RestController包含@ResponseBody注解，可以将对象或者集合转换成成json格式返回

        return Result.success(depts);
    }
    // 删除操作
    @Log
    @DeleteMapping //("depts")
//    // 原始方法
//    public Result delete(HttpServletRequest request) {
//        String id = request.getParameter("id");
//        int idInt = Integer.parseInt(id);
//        System.out.println(idInt);
//        return Result.success();
//    }
    // 通过spring提供的注解请求参数
    //public Result delete(@RequestParam("id") Integer id) {
    // 方式三：请求参数名和变量名保持一致
    public Result delete(Integer id) {
        //System.out.println(id);
        log.info("删除部门操作接收id={}",id);
        deptService.delete(id);
        return Result.success();
    }
    @Log
    // 新增操作，@RequestBody接收json格式参数，使用对应的对象接收，变量名需要和参数名一致
    @PostMapping  //("depts")
    public Result add(@RequestBody Dept dept) {
        log.info("新增部门操作接受dept：{}",dept);
        deptService.add(dept);
        return Result.success();
    }
    // 根据id查询,@PathVariable接收路径参数，几个参数就写几个
    @GetMapping("/{id}")
    public Result getById(@PathVariable Integer id) {
        log.info("根据id查询接受id：{}",id);
        Dept dept = deptService.getById(id);
        return Result.success(dept);
    }
    @Log
    // 修改操作
    @PutMapping  //("depts")
    public Result update(@RequestBody Dept dept) {
        log.info("修改部门操作接受dept：{}",dept);
        deptService.update(dept);
        return Result.success();
    }
}
